/**
 * <p>版权所有：中企动力
 * <p>未经本公司许可，不得以任何方式复制或使用本程序任何部分
 */
package com.ce.pms.house.dao;

import java.util.List;

import org.hibernate.Query;

import com.ce.pms.base.dao.IPmsBaseDao;
import com.ce.pms.house.model.Environment;
import com.ce.pms.house.model.HouseDomain;
import com.ce.pms.house.model.Layout;
import com.ce.pms.house.model.ProjectDomain;
import com.sitechasia.webx.core.support.Page;

/**
 * 功能描述: IProjectDao 期数接口
 *
 * @author  付湘辉
 * Created on：  2008-6-25
 * @author  付湘辉
 * update on：  2008-6-25
 */

public interface IProjectDao extends IPmsBaseDao<ProjectDomain> {
	/**
	 * 功能描述:根据指定期的名字查询期数实体<br>
	 *
	 * @param projectName
	 * @param ProjectDomain
	 * @return Create author:胡煦 Create on:2008-7-14 Edit author: Edit on: Why:
	 */
	public ProjectDomain getProjectByName(String projectName);
	/**
	 * 方法描述: 根据楼栋ID查询相关建设期
	 * @author 胡煦
	 * Create on:2008-8-21
	 * @param buildingId
	 * @return ProjectDomain
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public ProjectDomain queryProjectByBuildingId(Long buildingId);
	/**
	 * 功能描述:根据指定期的名字查询记录数<br>
	 * 注：新建判断name的唯一性时，projectId为null；修改判断name的唯一性时，则需要传入projectId<br>
	 * @param projectName
	 * @param projectId
	 * @return
	 * Create author:胡煦
	 * Create on:2008-7-14
	 * Edit author:
	 * Edit on:
	 * Why:
	 */
	public Long checkProjectName(String projectName,String projectId);

	/**
	 * 功能描述:根据指定的建设规划的土地宗号查询记录数<br>
	 * 注：新建判断name的唯一性时，layoutId为null；修改判断name的唯一性时，则需要传入layoutId<br>
	 * @param layoutName
	 * @param projectId
	 * @param layoutId
	 * @return
	 * Create author:胡煦
	 * Create on:2008-7-14
	 * Edit author:
	 * Edit on:
	 * Why:
	 */
	public Long checkLayoutName(String layoutName,Long projectId, Long layoutId);

	/**
	 * 功能描述:根据指定配套设施名字查询记录数<br>
	 * 注：新建判断name的唯一性时，environmentId为null；修改判断name的唯一性时，则需要传入environmentId<br>
	 * @param environmentName
	 * @param projectId
	 * @param environmentId
	 * @return
	 * Create author:胡煦
	 * Create on:2008-7-14
	 * Edit author:
	 * Edit on:
	 * Why:
	 */
	public Long checkEnvironmentName(String environmentName,Long projectId,Long environmentId);
	/**
    * 更新ProjectDomain到数据库
    * @param project
    * @return ProjectDomain
    * @roseuid 48479CA002CE
    */
   public ProjectDomain updateProject(ProjectDomain project);

   /**
    * 算法描述:
    * 1. 读取QueryCondition, pageSize, pageNo设置的检   索条件.
    * 2. 根据查询条件分页检索ProjectDomain实体
    * @param qc
    * @param pageNo
    * @param pageSize
    * @roseuid 48479CAA0109
    */
   public Page queryPageProjects(Long id, int pageNo, int pageSize);

   /**
    *
    * 功能描述: 根据projectId检索ProjectDomain
    *
    * @author 付湘辉
    * Created on:2008-7-7
    *
    * 修改原因：
    * @param id
    * @return ProjectDomain 返回结果
    * @roseuid 48479CD701B5
    */
   public ProjectDomain getProject(Long id);

   /**
    * 保存ProjectDomain实例
    * @param o
    * @return ProjectDomain
    * @roseuid 4847BADB02DE
    */
   public ProjectDomain saveProject(ProjectDomain o);

   /**
    *
    * 功能描述: 根据楼盘id得到期数列表
    *
    * @author 付湘辉
    * Created on:2008-7-8
    *
    * 修改原因：
    * @param areaId
    * @return List<ProjectDomain> 返回结果
    */
   public List<ProjectDomain> getProjectDomainListByAreaId(Long areaId);
}
